home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 July: Mac OS SDK / Dev.CD Jul 96 SDK / Dev.CD Jul 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc Development Framework / ODFDev / Draw / Sources / DrawCmds.h < prev    next >
Encoding:
Text File  |  1996-04-25  |  8.0 KB  |  293 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                DrawCmds.h
  4. //    Release Version:    $ ODF 1 $
  5. //
  6. //    Author:                Mary Boetcher
  7. //
  8. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  9. //
  10. //========================================================================================
  11.  
  12. #ifndef DRAWCMDS_H
  13. #define DRAWCMDS_H
  14.  
  15. // ----- FrameWork Includes -----
  16.  
  17. #ifndef FWCMD_H
  18. #include "FWCmd.h"
  19. #endif
  20.  
  21. // ----- OS Includes -----
  22.  
  23. #ifndef FWCOLOR_H
  24. #include "FWColor.h"
  25. #endif
  26.  
  27. #ifndef FWPAT_H
  28. #include "FWPat.h"
  29. #endif
  30.  
  31. #ifndef FWRECT_H
  32. #include "FWRect.h"
  33. #endif
  34.  
  35.  
  36. //========================================================================================
  37. //    Forward Declarations
  38. //========================================================================================
  39.  
  40. class FW_CFrame;
  41. class CBaseShape;
  42. class CDrawPart;
  43. class CDrawFrame;
  44. class CDrawSelection;
  45. class CDrawContent;
  46.  
  47. //========================================================================================
  48. //     Constants - Command numbers
  49. //========================================================================================
  50.  
  51. const ODCommandID cDrawShapeCommand        = 3000;
  52. const ODCommandID cChangeFillColor        = 3001;
  53. const ODCommandID cChangeFillPattern    = 3002;
  54. const ODCommandID cChangeFrameColor        = 3003;
  55. const ODCommandID cChangeFramePattern    = 3004;
  56. const ODCommandID cChangeRenderVerb        = 3005;
  57. const ODCommandID cResizeCommand        = 3006;
  58. const ODCommandID cChangePenSize        = 3007;
  59.  
  60. //========================================================================================
  61. // class CDrawShapeCommand - Draw a new shape and add it to the document
  62. //========================================================================================
  63.  
  64. class CDrawShapeCommand : public FW_CCommand
  65. {
  66.   public:
  67.  
  68.     FW_DECLARE_AUTO(CDrawShapeCommand)
  69.  
  70.     CDrawShapeCommand(Environment* ev, 
  71.                     CDrawPart* part, 
  72.                     FW_CFrame* frame,
  73.                     CDrawSelection* selection,
  74.                     CBaseShape* newShape);
  75.  
  76.     virtual ~ CDrawShapeCommand();
  77.  
  78.     // --- Command overrides
  79.     virtual void DoIt(Environment* ev);            // Override
  80.     virtual void UndoIt(Environment* ev);            // Override
  81.     virtual void RedoIt(Environment* ev);            // Override
  82.     virtual void CommitUndone(Environment* ev);    // Override
  83.  
  84.   protected:
  85.     CDrawContent*    fNewContent;
  86.     CDrawPart*        fDrawPart;
  87.     CDrawSelection*    fDrawSelection;
  88. };
  89.  
  90. //========================================================================================
  91. // class CResizeShapeCommand - Change size of selected shapes
  92. //========================================================================================
  93.  
  94. class CResizeShapeCommand : public FW_CCommand
  95. {
  96.   public:
  97.  
  98.     FW_DECLARE_AUTO(CResizeShapeCommand)
  99.  
  100.     CResizeShapeCommand(Environment* ev, 
  101.                         CDrawPart* part,
  102.                         FW_CFrame* frame,
  103.                         CDrawSelection* selection,
  104.                         const FW_CRect& srcRect,
  105.                         const FW_CRect& dstRect);
  106.  
  107.     virtual ~ CResizeShapeCommand();
  108.  
  109.     // --- Command overrides
  110.     virtual void DoIt(Environment* ev);            // Override
  111.     virtual void UndoIt(Environment* ev);            // Override
  112.     virtual void RedoIt(Environment* ev);            // Override
  113.  
  114.   private:
  115.     void MapShapes(Environment* ev, const FW_CRect& srcRect, const FW_CRect& dstRect);
  116.     void Redraw(Environment* ev, ODDoneState doneState);
  117.  
  118.   protected:
  119.     CDrawPart*            fDrawPart;
  120.     CDrawSelection*        fDrawSelection;
  121.     FW_CRect            fSourceRect;
  122.     FW_CRect            fDestRect;
  123.     ODShape*            fUpdateShape;
  124.     CDrawContent*        fChangedContent;
  125. };
  126.  
  127. //========================================================================================
  128. // class CChangeShapeCommand - Change shape attributes: color, pattern, render verb
  129. //========================================================================================
  130.  
  131. class CChangeShapeCommand : public FW_CCommand
  132. {
  133.   public:
  134.  
  135.     FW_DECLARE_AUTO(CChangeShapeCommand)
  136.  
  137.     CChangeShapeCommand(Environment* ev, 
  138.                         ODCommandID id,
  139.                         CDrawPart* part, 
  140.                         FW_CFrame* frame,
  141.                         CDrawSelection* selection);
  142.  
  143.     virtual ~ CChangeShapeCommand();
  144.  
  145.     // --- Command overrides
  146.     virtual void DoIt(Environment* ev);            // Override
  147.     virtual void UndoIt(Environment* ev);            // Override
  148.     virtual void RedoIt(Environment* ev);            // Override
  149.  
  150.   protected:
  151.  
  152.     // --- Must be overridden
  153.     virtual void DoChange(Environment* ev) = 0;
  154.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index) = 0;
  155.  
  156.   private:
  157.     void UpdateDisplay(Environment* ev);
  158.  
  159.   protected:
  160.     CDrawPart*                fDrawPart;
  161.     CDrawSelection*            fDrawSelection;
  162.     CDrawContent*            fChangedContent;
  163. };
  164.  
  165. //========================================================================================
  166. // CChangeColorCommand
  167. //========================================================================================
  168.  
  169. class CChangeColorCommand : public CChangeShapeCommand
  170. {
  171.   public:
  172.  
  173.     FW_DECLARE_AUTO(CChangeColorCommand)
  174.  
  175.     CChangeColorCommand(Environment* ev, 
  176.                         ODCommandID commandID,
  177.                         CDrawPart* part, 
  178.                         FW_CFrame* frame,
  179.                         CDrawSelection* selection,
  180.                         const FW_CColor& newColor);
  181.  
  182.     virtual ~ CChangeColorCommand();
  183.  
  184.     // --- CChangeShapeCommand overrides
  185.   protected:
  186.     virtual void DoChange(Environment* ev);        // Override
  187.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  188.   public:
  189.     virtual void SaveUndoState(Environment* ev);    // Override
  190.  
  191.   protected:
  192.     FW_CColor*            fOldColors;        // array of FW_CColor
  193.     FW_CColor            fNewColor;
  194.     FW_Boolean            fIsFill;
  195. };
  196.  
  197. //========================================================================================
  198. // CChangePatternCommand
  199. //========================================================================================
  200.  
  201. class CChangePatternCommand : public CChangeShapeCommand
  202. {
  203.   public:
  204.  
  205.     FW_DECLARE_AUTO(CChangePatternCommand)
  206.  
  207.     CChangePatternCommand(Environment* ev, 
  208.                         ODCommandID commandID,
  209.                         CDrawPart* part, 
  210.                         FW_CFrame* frame,
  211.                         CDrawSelection* selection,
  212.                         const FW_CPattern& newPattern);
  213.  
  214.     virtual ~ CChangePatternCommand();
  215.  
  216.     // --- CChangeShapeCommand overrides
  217.   protected:
  218.     virtual void DoChange(Environment* ev);        // Override
  219.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  220.  
  221.   public:
  222.     virtual void SaveUndoState(Environment* ev);    // Override
  223.  
  224.   protected:
  225.     FW_CPattern**        fOldPatterns;    // array of FW_CPattern
  226.     FW_CPattern            fNewPattern;
  227.     unsigned short        fCount;
  228.     FW_Boolean            fIsFill;
  229. };
  230.  
  231. //========================================================================================
  232. // CChangeRenderVerbCommand
  233. //========================================================================================
  234.  
  235. class CChangeRenderVerbCommand : public CChangeShapeCommand
  236. {
  237.   public:
  238.  
  239.     FW_DECLARE_AUTO(CChangeRenderVerbCommand)
  240.  
  241.     CChangeRenderVerbCommand(Environment* ev, 
  242.                             CDrawPart* part, 
  243.                             FW_CFrame* frame,
  244.                             CDrawSelection* selection,
  245.                             unsigned short newRenderVerb);
  246.  
  247.     virtual ~ CChangeRenderVerbCommand();
  248.  
  249.     // --- CChangeShapeCommand overrides
  250.   protected:
  251.     virtual void DoChange(Environment* ev);        // Override
  252.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  253.   public:
  254.     virtual void SaveUndoState(Environment* ev);    // Override
  255.  
  256.   private:
  257.     unsigned short    fNewRenderVerb;
  258.     unsigned short*    fOldRenderVerbs;    // array of unsigned short
  259. };
  260.  
  261. //========================================================================================
  262. // CChangePenSizeCommand
  263. //========================================================================================
  264.  
  265. class CChangePenSizeCommand : public CChangeShapeCommand
  266. {
  267.   public:
  268.  
  269.     FW_DECLARE_AUTO(CChangePenSizeCommand)
  270.  
  271.     CChangePenSizeCommand(Environment* ev, 
  272.                           CDrawPart* part, 
  273.                           FW_CFrame* frame,
  274.                           CDrawSelection* selection,
  275.                           FW_Fixed newPenSize);
  276.  
  277.     virtual ~ CChangePenSizeCommand();
  278.  
  279.     // --- CChangeShapeCommand overrides
  280.   protected:
  281.     virtual void DoChange(Environment* ev);        // Override
  282.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  283.   public:
  284.     virtual void SaveUndoState(Environment* ev);    // Override
  285.  
  286.   private:
  287.     FW_Fixed    fNewPenSize;
  288.     FW_Fixed*    fOldPenSizes;    // array of FW_Fixed
  289. };
  290.  
  291.  
  292. #endif
  293.